#########################################
"""
首页静态化
一般我们都是先查询数据库数据，然后再进行HTML页面的渲染
不管是 数据库的数据缓存，还是HTML页面渲染（特别是分类渲染，加载较慢）多少会影响用户体验
最好是 用户直接就可以访问 经过数据库查询且已经渲染好的HMTL页面（静态化）

经过数据库查询，渲染到HTML页面，写入到指定目录文件
""" 
from utils.goods import get_categories
from apps.contents.models import ContentCategory
from django.template import loader
from meiduo_mall import settings
import os
import time
def generate_static_index_html():
    print('-----------%s：generate_static_index_html---------'%time.ctime())
     # 1.商品分类数据
    categories=get_categories()
    # 2.广告数据
    contents = {}
    content_categories = ContentCategory.objects.all()
    for cat in content_categories:
        contents[cat.key] = cat.content_set.filter(status=True).order_by('sequence')

    # 我们的首页 后边会讲解页面静态化
    # 我们把数据 传递 给 模板
    context = {
        'categories': categories,
        'contents': contents,
    }

    # 1.获取首页模板文件
    index_template=loader.get_template('index.html')
    # 2.渲染首页html字符串
    index_html_data=index_template.render(context)
    # 3.把渲染好的HTML，写入到指定文件
    # base_dir 的上一级
    print(os.path.join(os.path.dirname(settings.BASE_DIR))
    
    file_path = os.path.join(os.path.dirname(settings.BASE_DIR),'front_end_pc/index.html')
    with open(file_path,'w',encoding='utf-8') as f:
        f.write(index_html_data)
   
